﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using PresentacionWindows.Base;
using Negocio.Generico;
using Negocio.View;
using Integra.Comun;

namespace PresentacionWindows
{
    public partial class frmSeleccionAlumno : FormBase
    {
        #region Atributos
        private int coAlumno;

        private int coAsignatura;



        #endregion

        #region propiedades

        /// <summary>
        /// Obtiene o establece el codigo del alumno
        /// </summary>
        public int CoAlumno
        {
            get { return coAlumno; }
            set { coAlumno = value; }
        }

        /// <summary>
        /// Obtiene o establece el codigo de la asignatura
        /// </summary>
        public int CoAsignatura
        {
            get { return coAsignatura; }
            set { coAsignatura = value; }
        }

        #endregion

        #region  Incializacion,Constructor,etc


        public frmSeleccionAlumno(int CodigoAsignatura)
        {
            this.CoAsignatura = CodigoAsignatura;
            InitializeComponent();

            DsToBinding();
        }


        #endregion

        #region funciones propias

        private void DsToBinding()
        {

            this.RecargaGrid();
        }

        private void RecargaGrid() 
        {
            this.Cursor = System.Windows.Forms.Cursors.WaitCursor;
            AlumnoAsignaturaDTO filtro = new AlumnoAsignaturaDTO();
            filtro.CoAsignatura = this.CoAsignatura;
            filtro.ListadoGeneral = (int)OpcionSiNo.Si;
            this.RecargaGrid(filtro);
            this.Cursor = System.Windows.Forms.Cursors.Default;
        }


        private void RecargaGrid(AlumnoAsignaturaDTO filtro)
        {
            AlumnoAsignaturaView vista = AlumnoAsignaturaView.GetInstance();
            this.grdAlumnosUniversidad.DataSource = vista.GetViewAlumnosAsignatura(filtro);
            this.grdAlumnosUniversidad.Refresh();
        }

        #endregion

        #region Eventos

        private void btnAceptar_Click(object sender, EventArgs e)
        {
            try
            {
                if (this.grdAlumnosUniversidad.Rows.Count > 0)
                {
                    AlumnoAsignaturaDTO filtro = null;
                    AlumnoAsignaturaView vista = AlumnoAsignaturaView.GetInstance();
                    foreach (DataGridViewRow dr in grdAlumnosUniversidad.SelectedRows)
                    {
                        filtro = null;
                        filtro=new AlumnoAsignaturaDTO();
                        filtro.CoAlumno = Int32.Parse(dr.Cells["CODIGOALUMNO"].Value.ToString());
                        filtro.CoAsignatura = this.CoAsignatura;
                        vista.InsertaAlumnoAsignatura(filtro);

                        //Hay que insertar una convocatoria por cada dualidad alumno-asignatura
                        ConvocatoriaDTO filtroCon = new ConvocatoriaDTO();
                        filtroCon.CoAlumno = Int32.Parse(dr.Cells["CODIGOALUMNO"].Value.ToString());
                        filtroCon.CoAsignatura = this.CoAsignatura;
                        filtroCon.Año = DateTime.Now.Year;
                        
                        GenericaView vistaGen= GenericaView.GetInstance();
                        if(vistaGen.Inserta(filtroCon))
                        {
                            //Yeah
                        }
                    }
                    RecargaGrid();
                   
                }
                this.DialogResult=DialogResult.OK;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error en la seleccion del alumno. Excepcion:" + ex.Message);
                this.DialogResult= DialogResult.Cancel;
            }
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }


        #endregion
    }
}
